Red Hat System Administration II 8.2

Упражнение под руководством преподавателя: Присоединение постоянного хранилища к контейнеру

В этом упражнении вы создадите контейнер, который обращается к веб-контенту в постоянном хранилище, предоставляемом хостом контейнеров.

Результаты

Вы сможете развернуть контейнер с постоянным хранилищем.

Войдите на машину workstation как пользователь student с паролем student.

На машине workstation выполните команду lab containers-storage start. Эта команда запускает подготовительный сценарий, который проверяет доступность машины servera в сети. Он также устанавливает на servera контейнерные утилиты.

[student@workstation ~]$ lab containers-storage start

Процедура 13.4. Инструкции

  1. С помощью команды ssh войдите на машину servera как пользователь student. Системы настроены на использование ключей SSH для аутентификации, поэтому пароль не требуется.

    [student@workstation ~]$ ssh student@servera
    ...output omitted...
    [student@servera ~]$ 
  2. Создайте каталог /home/student/webcontent/html/, а затем создайте тестовую страницу index.html. Вы будете использовать этот каталог в качестве постоянного хранилища при развертывании контейнера веб-сервера.

    1. Создайте каталог ~/webcontent/html/.

      [student@servera ~]$ mkdir -p ~/webcontent/html/
      [student@servera ~]$ 
    2. Создайте файл index.html и добавьте некоторое содержимое.

      [student@servera ~]$ echo "Hello World" > ~/webcontent/html/index.html
      [student@servera ~]$ 
    3. Убедитесь, что у всех есть доступ к каталогу и файлу index.html. Контейнер использует непривилегированного пользователя, который может читать файл index.html.

      [student@servera ~]$ ls -ld webcontent/html/
      drwxrwxr-x. 2 student student 24 Aug 28 04:56 webcontent/html/
      [student@servera ~]$ ls -l webcontent/html/index.html
      -rw-rw-r--. 1 student student 12 Aug 28 04:56 webcontent/html/index.html
  3. Создайте экземпляр контейнера HTTP-сервера Apache с постоянным хранилищем.

    1. Войдите в реестр registry.lab.example.com как пользователь admin с паролем redhat321.

      [student@servera ~]$ podman login registry.lab.example.com
      Username: admin
      Password: redhat321
      Login Succeeded!
    2. Создайте экземпляр отсоединенного контейнера с именем myweb. Перенаправьте порт 8080 на локальном хосте на порт 8080 контейнера. Смонтируйте каталог ~/webcontent с хоста в каталог /var/www в контейнере. Добавьте суффикс :Z к опции монтирования тома, чтобы указать команде podman повторно создать метки для каталога и его содержимого. Используйте образ registry.lab.example.com/rhel8/httpd-24:1-98. Следующая команда podman run очень длинная, и ее необходимо вводить в одной строке:

      [student@servera ~]$ podman run -d --name myweb -p 8080:8080 -v ~/webcontent:/var/www:Z registry.lab.example.com/rhel8/httpd-24:1-98
      ...output omitted...
    3. Выполните команду podman ps, чтобы убедиться, что контейнер работает, а затем используйте команду curl для доступа к веб-контенту на порту 8080.

      [student@servera ~]$ podman ps
      CONTAINER ID  IMAGE                                          COMMAND               CREATED             STATUS                 PORTS                   NAMES
      2f4844b376b7  registry.lab.example.com/rhel8/httpd-24:1-98   /usr/bin/run-http...  About a minute ago  Up About a minute ago  0.0.0.0:8080->8080/tcp  myweb
      [student@servera ~]$ curl http://localhost:8080/
      Hello World
  4. На предыдущем шаге вы использовали тег 1-98, чтобы выбрать определенную версию образа httpd-24. В реестре учебной аудитории есть более поздняя версия этого образа. Используйте команду skopeo inspect, чтобы отобразить сведения об образе registry.lab.example.com/rhel8/httpd-24 и получить тег для этой версии. Следующая команда skopeo inspect очень длинная, и ее необходимо вводить в одной строке:

    [student@servera ~]$ skopeo inspect docker://registry.lab.example.com/rhel8/httpd-24
    {
        "Name": "registry.lab.example.com/rhel8/httpd-24",
        "Digest": "sha256:bafa...a12a",
        "RepoTags": [
            "1-98",
            "1-104",
            "1-105",
            "latest"
        ],
    ...output omitted...

    В разделе RepoTags обратите внимание на наличие более поздней версии с тегом 1-105.

  5. Остановите и удалите контейнер myweb, а затем запустите новый контейнер, используя тег образа 1-105. Убедитесь, что веб-контент в постоянном хранилище не изменился.

    1. Остановите и удалите контейнер.

      [student@servera user]$ podman stop myweb
      2f4844b376b78f8f7021fe3a4c077ae52fdc1caa6d877e84106ab783d78e1e1a
      [student@servera user]$ podman rm myweb
      2f4844b376b78f8f7021fe3a4c077ae52fdc1caa6d877e84106ab783d78e1e1a
    2. Повторно выполните команду podman run, которая использовалась на предыдущем шаге, чтобы запустить контейнер myweb, но замените тег образа 1-98 на 1-105. Следующая команда podman run очень длинная, и ее необходимо вводить в одной строке:

      [student@servera ~]$ podman run -d --name myweb -p 8080:8080 -v ~/webcontent:/var/www:Z registry.lab.example.com/rhel8/httpd-24:1-105
      ...output omitted...
    3. Выполните команду podman ps, чтобы убедиться, что контейнер запущен. Используйте команду curl, чтобы убедиться, что данные постоянного тома сохранились, хотя был запущен новый контейнер.

      [student@servera ~]$ podman ps
      CONTAINER ID  IMAGE                                          COMMAND               CREATED             STATUS                 PORTS                   NAMES
      a648c286c653  registry.lab.example.com/rhel8/httpd-24:1-105  /usr/bin/run-http...  About a minute ago  Up About a minute ago  0.0.0.0:8080->8080/tcp  myweb
      [student@servera ~]$ curl http://localhost:8080/
      Hello World
    4. Выйдите с servera.

      [student@servera ~]$ exit
      logout
      Connection to servera closed.
      [student@workstation ~]$ 

Конец

На машине workstation запустите сценарий lab containers-storage finish, чтобы закончить это упражнение.

[student@workstation ~]$ lab containers-storage finish

Упражнение завершено.